1.硬件环境:
物理总内存:16G
物理CPU个数:2
CPU内核数:1
2.软件环境:
操作系统版本:CentOS release 6.9
jdk版本:jdk1.7.0_09
jfinal版本:jfinal-1.9
虚拟机配置:
JAVA_OPTS='-server -Xmx1024m -Xms1024m -Xss512k -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:+UseParNewG C -XX:+PrintGCDetails -Dcom.sun.management.jmxremote.port=8087 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'
tomcat配置:
<Connector executor="tomcatThreadPool" port="8829" enableLookups="false" protocol="org.apache.coyote.http11.Http11NioProtocol" acceptorThreadCount="4" selectorPool.maxSelectors="4" connectionTimeout="5000" redirectPort="8443" URIEncoding="utf-8"/>
3.测试数据:
从另一台服务器使用apache的ab工具发送get请求,请求数据128字节,响应数据1024字节,不解析响应数据;分为2种模式,模式1是直接使用ab工具向tomcat发送请求,模式2是使用ab工具发送请求到nginx,由nginx转发请求到tomcat

模式2测试如下:

结论:nginx+tomcat响应速度明显要低于直接请求tomcat,性能不如直接请求tomcat,但是nginx由于多了中间一层转发,使得请求压力不会一次性都集中在tomcat上,因此nginx+tomcat的CPU明显低于直接请求tomcat,也大大避免了因请求量过大导致tomcat服务不可用
此测试场景单一,结论仅供参考。
虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:
- 动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
- 负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理
作者:David
链接:https://www.zhihu.com/question/32212996/answer/87524617
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - nginx+tomcat与tomcat性能对比测试